/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package negocios;

import acceso_datos.EmergenciaDB;
import acceso_datos.TipoEmergenciaDB;
import datos.WEmergenciaInicial;
import datos.Emergencie;
import exceptions.AlfanumericoException;
import exceptions.Alfanumero;
import exceptions.EmergenciaInicialException;
import java.sql.SQLException;
import java.util.HashMap;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author miguesaca
 */
public class GestorEmergencia {

    private Emergencie emergencie;
    private HashMap<Integer, Emergencie> listaEmergencia = new HashMap<Integer, Emergencie>();
    private Alfanumero alfaNumero;

    public GestorEmergencia() throws SQLException {
        alfaNumero = new Alfanumero();
        cargarDatos();
    }

    public void cargarDatos() throws SQLException {

        EmergenciaDB edb = new EmergenciaDB();
        listaEmergencia = edb.listar();
        //listaEmergenciaInicial.put(emergenciaInicial.getRegistroLlamada().getId(), emergenciaInicial);
    }

    public void insertar(Emergencie emergencie) throws EmergenciaInicialException, AlfanumericoException, SQLException {
        alfaNumero.vacio(emergencie.getZona());
        alfaNumero.vacio(emergencie.getDescripcionGeneral());
//        if (listaRegistroLlamadas.containsKey(emergenciaInicial.getRegistroLlamada().getClave())) {
//            throw new EmergenciaInicialException("Emergencia Inicial ya existe");
//        }
        this.emergencie = emergencie;




        EmergenciaDB edb = new EmergenciaDB();
        emergencie.setId(edb.indiceFinal() + 1);
        edb.grabar(emergencie);


        listaEmergencia.put(emergencie.getId(), emergencie);
    }

    public void modificar(Emergencie emergencie) throws EmergenciaInicialException {
        buscar(emergencie.getRegistroLlamada().getId());
        this.emergencie = emergencie;
        listaEmergencia.put(emergencie.getId(), emergencie);
    }

    public Emergencie buscar(int clave) throws EmergenciaInicialException {
        if (!listaEmergencia.containsKey(clave)) {
            throw new EmergenciaInicialException("Emergencia no Existente");
        }
        return listaEmergencia.get(clave);
    }

    public void eliminar(int clave) throws EmergenciaInicialException {
        buscar(clave);
        listaEmergencia.remove(clave);
    }

    public DefaultTableModel tablaModelo() {
        Object nameColumns[] = {"Clave", "Zona", "DescripcionGeneral"};
        DefaultTableModel miTableModel = new DefaultTableModel(nameColumns, 0);
        for (Emergencie value : listaEmergencia.values()) {
            Object nuevaFila[] = {value.getId(), value.getZona(), value.getDescripcionGeneral()};
            miTableModel.addRow(nuevaFila);
        }

        return miTableModel;
    }
}
